In [1]:
import argparse
from intern.remote.boss import BossRemote
from intern.resource.boss.resource import *
from intern.utils.parallel import block_compute
import configparser
import requests
import numpy as np
from numpy import genfromtxt
import shutil
import blosc
from IPython.core.debugger import set_trace
import sys
import os
import itertools
from functools import partial
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
from multiprocessing import cpu_count
import csv
import datetime
import seaborn as sns
from intern.utils.parallel import block_compute
%matplotlib inline
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
CONFIG_FILE = 'config.ini'

In [2]:
COLL_NAME      = 'collman' 
EXP_NAME       = 'M247514_Rorb_1_Site3Align2_EM'
ANNO_NAME       = 'm247514_Site3Annotation_MN_global'
#COORD_FRAME    = 'collman_M247514_Rorb_1_Site3Align2_LENS_Session1_CROP'
CONFIG_FILE    = 'config.ini'

#CHAN_NAMES = ['Synapsin647']
#CHAN_NAMES = ['DAPI1st', 'DAPI2nd', 'DAPI3rd', 'GABA488', 'GAD647',
#        'gephyrin594', 'GS594', 'MBP488', 'NR1594', 'PSD95_488',
#        'Synapsin647', 'VGluT1_647']
#CHAN_NAMES = ['synapsin', 'PSDr']

In [3]:
config = configparser.ConfigParser()
config.read(CONFIG_FILE)
TOKEN = config['Default']['token']
boss_url = ''.join( ( config['Default']['protocol'],'://',config['Default']['host'],'/v1/' ) )
#print(boss_url)
#'https://api.boss.neurodata.io/v1/'

#intern
rem = BossRemote(CONFIG_FILE)
                                                                                                     
cf = CoordinateFrameResource(str(COLL_NAME + '_' + EXP_NAME))
cfr = rem.get_project(cf)
anno_res = ChannelResource(ANNO_NAME, COLL_NAME, EXP_NAME, 'annotation', datatype='uint64')

ex = {'x': cfr.x_stop, 'y': cfr.y_stop, 'z': cfr.z_stop}

blocks = block_compute(0,ex['x'],0,ex['y'],0,ex['z'],
           origin = (0,0,0), block_size = (512, 512, 16))

In [5]:
rem.get_bounding_box(anno_res, 0, id = 2, bb_type = 'tight')


Out[5]:
{'t_range': [0, 1],
 'x_range': [7304, 8239],
 'y_range': [5681, 6642],
 'z_range': [27, 48]}

In [26]:
ba = [b[0] for b in blocks]
bb = [b[1] for b in blocks]
bc = [b[2] for b in blocks]
blocks


Out[26]:
[((512, 1024), (512, 1024), (16, 32)),
 ((512, 1024), (512, 1024), (32, 48)),
 ((512, 1024), (512, 1024), (0, 16)),
 ((512, 1024), (512, 1024), (48, 49)),
 ((512, 1024), (1024, 1536), (16, 32)),
 ((512, 1024), (1024, 1536), (32, 48)),
 ((512, 1024), (1024, 1536), (0, 16)),
 ((512, 1024), (1024, 1536), (48, 49)),
 ((512, 1024), (1536, 2048), (16, 32)),
 ((512, 1024), (1536, 2048), (32, 48)),
 ((512, 1024), (1536, 2048), (0, 16)),
 ((512, 1024), (1536, 2048), (48, 49)),
 ((512, 1024), (2048, 2560), (16, 32)),
 ((512, 1024), (2048, 2560), (32, 48)),
 ((512, 1024), (2048, 2560), (0, 16)),
 ((512, 1024), (2048, 2560), (48, 49)),
 ((512, 1024), (2560, 3072), (16, 32)),
 ((512, 1024), (2560, 3072), (32, 48)),
 ((512, 1024), (2560, 3072), (0, 16)),
 ((512, 1024), (2560, 3072), (48, 49)),
 ((512, 1024), (3072, 3584), (16, 32)),
 ((512, 1024), (3072, 3584), (32, 48)),
 ((512, 1024), (3072, 3584), (0, 16)),
 ((512, 1024), (3072, 3584), (48, 49)),
 ((512, 1024), (3584, 4096), (16, 32)),
 ((512, 1024), (3584, 4096), (32, 48)),
 ((512, 1024), (3584, 4096), (0, 16)),
 ((512, 1024), (3584, 4096), (48, 49)),
 ((512, 1024), (4096, 4608), (16, 32)),
 ((512, 1024), (4096, 4608), (32, 48)),
 ((512, 1024), (4096, 4608), (0, 16)),
 ((512, 1024), (4096, 4608), (48, 49)),
 ((512, 1024), (4608, 5120), (16, 32)),
 ((512, 1024), (4608, 5120), (32, 48)),
 ((512, 1024), (4608, 5120), (0, 16)),
 ((512, 1024), (4608, 5120), (48, 49)),
 ((512, 1024), (5120, 5632), (16, 32)),
 ((512, 1024), (5120, 5632), (32, 48)),
 ((512, 1024), (5120, 5632), (0, 16)),
 ((512, 1024), (5120, 5632), (48, 49)),
 ((512, 1024), (5632, 6144), (16, 32)),
 ((512, 1024), (5632, 6144), (32, 48)),
 ((512, 1024), (5632, 6144), (0, 16)),
 ((512, 1024), (5632, 6144), (48, 49)),
 ((512, 1024), (6144, 6656), (16, 32)),
 ((512, 1024), (6144, 6656), (32, 48)),
 ((512, 1024), (6144, 6656), (0, 16)),
 ((512, 1024), (6144, 6656), (48, 49)),
 ((512, 1024), (6656, 7168), (16, 32)),
 ((512, 1024), (6656, 7168), (32, 48)),
 ((512, 1024), (6656, 7168), (0, 16)),
 ((512, 1024), (6656, 7168), (48, 49)),
 ((512, 1024), (7168, 7680), (16, 32)),
 ((512, 1024), (7168, 7680), (32, 48)),
 ((512, 1024), (7168, 7680), (0, 16)),
 ((512, 1024), (7168, 7680), (48, 49)),
 ((512, 1024), (7680, 8192), (16, 32)),
 ((512, 1024), (7680, 8192), (32, 48)),
 ((512, 1024), (7680, 8192), (0, 16)),
 ((512, 1024), (7680, 8192), (48, 49)),
 ((512, 1024), (8192, 8704), (16, 32)),
 ((512, 1024), (8192, 8704), (32, 48)),
 ((512, 1024), (8192, 8704), (0, 16)),
 ((512, 1024), (8192, 8704), (48, 49)),
 ((512, 1024), (8704, 9216), (16, 32)),
 ((512, 1024), (8704, 9216), (32, 48)),
 ((512, 1024), (8704, 9216), (0, 16)),
 ((512, 1024), (8704, 9216), (48, 49)),
 ((512, 1024), (9216, 9728), (16, 32)),
 ((512, 1024), (9216, 9728), (32, 48)),
 ((512, 1024), (9216, 9728), (0, 16)),
 ((512, 1024), (9216, 9728), (48, 49)),
 ((512, 1024), (9728, 10240), (16, 32)),
 ((512, 1024), (9728, 10240), (32, 48)),
 ((512, 1024), (9728, 10240), (0, 16)),
 ((512, 1024), (9728, 10240), (48, 49)),
 ((512, 1024), (10240, 10752), (16, 32)),
 ((512, 1024), (10240, 10752), (32, 48)),
 ((512, 1024), (10240, 10752), (0, 16)),
 ((512, 1024), (10240, 10752), (48, 49)),
 ((512, 1024), (10752, 11264), (16, 32)),
 ((512, 1024), (10752, 11264), (32, 48)),
 ((512, 1024), (10752, 11264), (0, 16)),
 ((512, 1024), (10752, 11264), (48, 49)),
 ((512, 1024), (11264, 11776), (16, 32)),
 ((512, 1024), (11264, 11776), (32, 48)),
 ((512, 1024), (11264, 11776), (0, 16)),
 ((512, 1024), (11264, 11776), (48, 49)),
 ((512, 1024), (11776, 12288), (16, 32)),
 ((512, 1024), (11776, 12288), (32, 48)),
 ((512, 1024), (11776, 12288), (0, 16)),
 ((512, 1024), (11776, 12288), (48, 49)),
 ((512, 1024), (12288, 12800), (16, 32)),
 ((512, 1024), (12288, 12800), (32, 48)),
 ((512, 1024), (12288, 12800), (0, 16)),
 ((512, 1024), (12288, 12800), (48, 49)),
 ((512, 1024), (12800, 13312), (16, 32)),
 ((512, 1024), (12800, 13312), (32, 48)),
 ((512, 1024), (12800, 13312), (0, 16)),
 ((512, 1024), (12800, 13312), (48, 49)),
 ((512, 1024), (13312, 13824), (16, 32)),
 ((512, 1024), (13312, 13824), (32, 48)),
 ((512, 1024), (13312, 13824), (0, 16)),
 ((512, 1024), (13312, 13824), (48, 49)),
 ((512, 1024), (13824, 14336), (16, 32)),
 ((512, 1024), (13824, 14336), (32, 48)),
 ((512, 1024), (13824, 14336), (0, 16)),
 ((512, 1024), (13824, 14336), (48, 49)),
 ((512, 1024), (0, 512), (16, 32)),
 ((512, 1024), (0, 512), (32, 48)),
 ((512, 1024), (0, 512), (0, 16)),
 ((512, 1024), (0, 512), (48, 49)),
 ((512, 1024), (14336, 14723), (16, 32)),
 ((512, 1024), (14336, 14723), (32, 48)),
 ((512, 1024), (14336, 14723), (0, 16)),
 ((512, 1024), (14336, 14723), (48, 49)),
 ((1024, 1536), (512, 1024), (16, 32)),
 ((1024, 1536), (512, 1024), (32, 48)),
 ((1024, 1536), (512, 1024), (0, 16)),
 ((1024, 1536), (512, 1024), (48, 49)),
 ((1024, 1536), (1024, 1536), (16, 32)),
 ((1024, 1536), (1024, 1536), (32, 48)),
 ((1024, 1536), (1024, 1536), (0, 16)),
 ((1024, 1536), (1024, 1536), (48, 49)),
 ((1024, 1536), (1536, 2048), (16, 32)),
 ((1024, 1536), (1536, 2048), (32, 48)),
 ((1024, 1536), (1536, 2048), (0, 16)),
 ((1024, 1536), (1536, 2048), (48, 49)),
 ((1024, 1536), (2048, 2560), (16, 32)),
 ((1024, 1536), (2048, 2560), (32, 48)),
 ((1024, 1536), (2048, 2560), (0, 16)),
 ((1024, 1536), (2048, 2560), (48, 49)),
 ((1024, 1536), (2560, 3072), (16, 32)),
 ((1024, 1536), (2560, 3072), (32, 48)),
 ((1024, 1536), (2560, 3072), (0, 16)),
 ((1024, 1536), (2560, 3072), (48, 49)),
 ((1024, 1536), (3072, 3584), (16, 32)),
 ((1024, 1536), (3072, 3584), (32, 48)),
 ((1024, 1536), (3072, 3584), (0, 16)),
 ((1024, 1536), (3072, 3584), (48, 49)),
 ((1024, 1536), (3584, 4096), (16, 32)),
 ((1024, 1536), (3584, 4096), (32, 48)),
 ((1024, 1536), (3584, 4096), (0, 16)),
 ((1024, 1536), (3584, 4096), (48, 49)),
 ((1024, 1536), (4096, 4608), (16, 32)),
 ((1024, 1536), (4096, 4608), (32, 48)),
 ((1024, 1536), (4096, 4608), (0, 16)),
 ((1024, 1536), (4096, 4608), (48, 49)),
 ((1024, 1536), (4608, 5120), (16, 32)),
 ((1024, 1536), (4608, 5120), (32, 48)),
 ((1024, 1536), (4608, 5120), (0, 16)),
 ((1024, 1536), (4608, 5120), (48, 49)),
 ((1024, 1536), (5120, 5632), (16, 32)),
 ((1024, 1536), (5120, 5632), (32, 48)),
 ((1024, 1536), (5120, 5632), (0, 16)),
 ((1024, 1536), (5120, 5632), (48, 49)),
 ((1024, 1536), (5632, 6144), (16, 32)),
 ((1024, 1536), (5632, 6144), (32, 48)),
 ((1024, 1536), (5632, 6144), (0, 16)),
 ((1024, 1536), (5632, 6144), (48, 49)),
 ((1024, 1536), (6144, 6656), (16, 32)),
 ((1024, 1536), (6144, 6656), (32, 48)),
 ((1024, 1536), (6144, 6656), (0, 16)),
 ((1024, 1536), (6144, 6656), (48, 49)),
 ((1024, 1536), (6656, 7168), (16, 32)),
 ((1024, 1536), (6656, 7168), (32, 48)),
 ((1024, 1536), (6656, 7168), (0, 16)),
 ((1024, 1536), (6656, 7168), (48, 49)),
 ((1024, 1536), (7168, 7680), (16, 32)),
 ((1024, 1536), (7168, 7680), (32, 48)),
 ((1024, 1536), (7168, 7680), (0, 16)),
 ((1024, 1536), (7168, 7680), (48, 49)),
 ((1024, 1536), (7680, 8192), (16, 32)),
 ((1024, 1536), (7680, 8192), (32, 48)),
 ((1024, 1536), (7680, 8192), (0, 16)),
 ((1024, 1536), (7680, 8192), (48, 49)),
 ((1024, 1536), (8192, 8704), (16, 32)),
 ((1024, 1536), (8192, 8704), (32, 48)),
 ((1024, 1536), (8192, 8704), (0, 16)),
 ((1024, 1536), (8192, 8704), (48, 49)),
 ((1024, 1536), (8704, 9216), (16, 32)),
 ((1024, 1536), (8704, 9216), (32, 48)),
 ((1024, 1536), (8704, 9216), (0, 16)),
 ((1024, 1536), (8704, 9216), (48, 49)),
 ((1024, 1536), (9216, 9728), (16, 32)),
 ((1024, 1536), (9216, 9728), (32, 48)),
 ((1024, 1536), (9216, 9728), (0, 16)),
 ((1024, 1536), (9216, 9728), (48, 49)),
 ((1024, 1536), (9728, 10240), (16, 32)),
 ((1024, 1536), (9728, 10240), (32, 48)),
 ((1024, 1536), (9728, 10240), (0, 16)),
 ((1024, 1536), (9728, 10240), (48, 49)),
 ((1024, 1536), (10240, 10752), (16, 32)),
 ((1024, 1536), (10240, 10752), (32, 48)),
 ((1024, 1536), (10240, 10752), (0, 16)),
 ((1024, 1536), (10240, 10752), (48, 49)),
 ((1024, 1536), (10752, 11264), (16, 32)),
 ((1024, 1536), (10752, 11264), (32, 48)),
 ((1024, 1536), (10752, 11264), (0, 16)),
 ((1024, 1536), (10752, 11264), (48, 49)),
 ((1024, 1536), (11264, 11776), (16, 32)),
 ((1024, 1536), (11264, 11776), (32, 48)),
 ((1024, 1536), (11264, 11776), (0, 16)),
 ((1024, 1536), (11264, 11776), (48, 49)),
 ((1024, 1536), (11776, 12288), (16, 32)),
 ((1024, 1536), (11776, 12288), (32, 48)),
 ((1024, 1536), (11776, 12288), (0, 16)),
 ((1024, 1536), (11776, 12288), (48, 49)),
 ((1024, 1536), (12288, 12800), (16, 32)),
 ((1024, 1536), (12288, 12800), (32, 48)),
 ((1024, 1536), (12288, 12800), (0, 16)),
 ((1024, 1536), (12288, 12800), (48, 49)),
 ((1024, 1536), (12800, 13312), (16, 32)),
 ((1024, 1536), (12800, 13312), (32, 48)),
 ((1024, 1536), (12800, 13312), (0, 16)),
 ((1024, 1536), (12800, 13312), (48, 49)),
 ((1024, 1536), (13312, 13824), (16, 32)),
 ((1024, 1536), (13312, 13824), (32, 48)),
 ((1024, 1536), (13312, 13824), (0, 16)),
 ((1024, 1536), (13312, 13824), (48, 49)),
 ((1024, 1536), (13824, 14336), (16, 32)),
 ((1024, 1536), (13824, 14336), (32, 48)),
 ((1024, 1536), (13824, 14336), (0, 16)),
 ((1024, 1536), (13824, 14336), (48, 49)),
 ((1024, 1536), (0, 512), (16, 32)),
 ((1024, 1536), (0, 512), (32, 48)),
 ((1024, 1536), (0, 512), (0, 16)),
 ((1024, 1536), (0, 512), (48, 49)),
 ((1024, 1536), (14336, 14723), (16, 32)),
 ((1024, 1536), (14336, 14723), (32, 48)),
 ((1024, 1536), (14336, 14723), (0, 16)),
 ((1024, 1536), (14336, 14723), (48, 49)),
 ((1536, 2048), (512, 1024), (16, 32)),
 ((1536, 2048), (512, 1024), (32, 48)),
 ((1536, 2048), (512, 1024), (0, 16)),
 ((1536, 2048), (512, 1024), (48, 49)),
 ((1536, 2048), (1024, 1536), (16, 32)),
 ((1536, 2048), (1024, 1536), (32, 48)),
 ((1536, 2048), (1024, 1536), (0, 16)),
 ((1536, 2048), (1024, 1536), (48, 49)),
 ((1536, 2048), (1536, 2048), (16, 32)),
 ((1536, 2048), (1536, 2048), (32, 48)),
 ((1536, 2048), (1536, 2048), (0, 16)),
 ((1536, 2048), (1536, 2048), (48, 49)),
 ((1536, 2048), (2048, 2560), (16, 32)),
 ((1536, 2048), (2048, 2560), (32, 48)),
 ((1536, 2048), (2048, 2560), (0, 16)),
 ((1536, 2048), (2048, 2560), (48, 49)),
 ((1536, 2048), (2560, 3072), (16, 32)),
 ((1536, 2048), (2560, 3072), (32, 48)),
 ((1536, 2048), (2560, 3072), (0, 16)),
 ((1536, 2048), (2560, 3072), (48, 49)),
 ((1536, 2048), (3072, 3584), (16, 32)),
 ((1536, 2048), (3072, 3584), (32, 48)),
 ((1536, 2048), (3072, 3584), (0, 16)),
 ((1536, 2048), (3072, 3584), (48, 49)),
 ((1536, 2048), (3584, 4096), (16, 32)),
 ((1536, 2048), (3584, 4096), (32, 48)),
 ((1536, 2048), (3584, 4096), (0, 16)),
 ((1536, 2048), (3584, 4096), (48, 49)),
 ((1536, 2048), (4096, 4608), (16, 32)),
 ((1536, 2048), (4096, 4608), (32, 48)),
 ((1536, 2048), (4096, 4608), (0, 16)),
 ((1536, 2048), (4096, 4608), (48, 49)),
 ((1536, 2048), (4608, 5120), (16, 32)),
 ((1536, 2048), (4608, 5120), (32, 48)),
 ((1536, 2048), (4608, 5120), (0, 16)),
 ((1536, 2048), (4608, 5120), (48, 49)),
 ((1536, 2048), (5120, 5632), (16, 32)),
 ((1536, 2048), (5120, 5632), (32, 48)),
 ((1536, 2048), (5120, 5632), (0, 16)),
 ((1536, 2048), (5120, 5632), (48, 49)),
 ((1536, 2048), (5632, 6144), (16, 32)),
 ((1536, 2048), (5632, 6144), (32, 48)),
 ((1536, 2048), (5632, 6144), (0, 16)),
 ((1536, 2048), (5632, 6144), (48, 49)),
 ((1536, 2048), (6144, 6656), (16, 32)),
 ((1536, 2048), (6144, 6656), (32, 48)),
 ((1536, 2048), (6144, 6656), (0, 16)),
 ((1536, 2048), (6144, 6656), (48, 49)),
 ((1536, 2048), (6656, 7168), (16, 32)),
 ((1536, 2048), (6656, 7168), (32, 48)),
 ((1536, 2048), (6656, 7168), (0, 16)),
 ((1536, 2048), (6656, 7168), (48, 49)),
 ((1536, 2048), (7168, 7680), (16, 32)),
 ((1536, 2048), (7168, 7680), (32, 48)),
 ((1536, 2048), (7168, 7680), (0, 16)),
 ((1536, 2048), (7168, 7680), (48, 49)),
 ((1536, 2048), (7680, 8192), (16, 32)),
 ((1536, 2048), (7680, 8192), (32, 48)),
 ((1536, 2048), (7680, 8192), (0, 16)),
 ((1536, 2048), (7680, 8192), (48, 49)),
 ((1536, 2048), (8192, 8704), (16, 32)),
 ((1536, 2048), (8192, 8704), (32, 48)),
 ((1536, 2048), (8192, 8704), (0, 16)),
 ((1536, 2048), (8192, 8704), (48, 49)),
 ((1536, 2048), (8704, 9216), (16, 32)),
 ((1536, 2048), (8704, 9216), (32, 48)),
 ((1536, 2048), (8704, 9216), (0, 16)),
 ((1536, 2048), (8704, 9216), (48, 49)),
 ((1536, 2048), (9216, 9728), (16, 32)),
 ((1536, 2048), (9216, 9728), (32, 48)),
 ((1536, 2048), (9216, 9728), (0, 16)),
 ((1536, 2048), (9216, 9728), (48, 49)),
 ((1536, 2048), (9728, 10240), (16, 32)),
 ((1536, 2048), (9728, 10240), (32, 48)),
 ((1536, 2048), (9728, 10240), (0, 16)),
 ((1536, 2048), (9728, 10240), (48, 49)),
 ((1536, 2048), (10240, 10752), (16, 32)),
 ((1536, 2048), (10240, 10752), (32, 48)),
 ((1536, 2048), (10240, 10752), (0, 16)),
 ((1536, 2048), (10240, 10752), (48, 49)),
 ((1536, 2048), (10752, 11264), (16, 32)),
 ((1536, 2048), (10752, 11264), (32, 48)),
 ((1536, 2048), (10752, 11264), (0, 16)),
 ((1536, 2048), (10752, 11264), (48, 49)),
 ((1536, 2048), (11264, 11776), (16, 32)),
 ((1536, 2048), (11264, 11776), (32, 48)),
 ((1536, 2048), (11264, 11776), (0, 16)),
 ((1536, 2048), (11264, 11776), (48, 49)),
 ((1536, 2048), (11776, 12288), (16, 32)),
 ((1536, 2048), (11776, 12288), (32, 48)),
 ((1536, 2048), (11776, 12288), (0, 16)),
 ((1536, 2048), (11776, 12288), (48, 49)),
 ((1536, 2048), (12288, 12800), (16, 32)),
 ((1536, 2048), (12288, 12800), (32, 48)),
 ((1536, 2048), (12288, 12800), (0, 16)),
 ((1536, 2048), (12288, 12800), (48, 49)),
 ((1536, 2048), (12800, 13312), (16, 32)),
 ((1536, 2048), (12800, 13312), (32, 48)),
 ((1536, 2048), (12800, 13312), (0, 16)),
 ((1536, 2048), (12800, 13312), (48, 49)),
 ((1536, 2048), (13312, 13824), (16, 32)),
 ((1536, 2048), (13312, 13824), (32, 48)),
 ((1536, 2048), (13312, 13824), (0, 16)),
 ((1536, 2048), (13312, 13824), (48, 49)),
 ((1536, 2048), (13824, 14336), (16, 32)),
 ((1536, 2048), (13824, 14336), (32, 48)),
 ((1536, 2048), (13824, 14336), (0, 16)),
 ((1536, 2048), (13824, 14336), (48, 49)),
 ((1536, 2048), (0, 512), (16, 32)),
 ((1536, 2048), (0, 512), (32, 48)),
 ((1536, 2048), (0, 512), (0, 16)),
 ((1536, 2048), (0, 512), (48, 49)),
 ((1536, 2048), (14336, 14723), (16, 32)),
 ((1536, 2048), (14336, 14723), (32, 48)),
 ((1536, 2048), (14336, 14723), (0, 16)),
 ((1536, 2048), (14336, 14723), (48, 49)),
 ((2048, 2560), (512, 1024), (16, 32)),
 ((2048, 2560), (512, 1024), (32, 48)),
 ((2048, 2560), (512, 1024), (0, 16)),
 ((2048, 2560), (512, 1024), (48, 49)),
 ((2048, 2560), (1024, 1536), (16, 32)),
 ((2048, 2560), (1024, 1536), (32, 48)),
 ((2048, 2560), (1024, 1536), (0, 16)),
 ((2048, 2560), (1024, 1536), (48, 49)),
 ((2048, 2560), (1536, 2048), (16, 32)),
 ((2048, 2560), (1536, 2048), (32, 48)),
 ((2048, 2560), (1536, 2048), (0, 16)),
 ((2048, 2560), (1536, 2048), (48, 49)),
 ((2048, 2560), (2048, 2560), (16, 32)),
 ((2048, 2560), (2048, 2560), (32, 48)),
 ((2048, 2560), (2048, 2560), (0, 16)),
 ((2048, 2560), (2048, 2560), (48, 49)),
 ((2048, 2560), (2560, 3072), (16, 32)),
 ((2048, 2560), (2560, 3072), (32, 48)),
 ((2048, 2560), (2560, 3072), (0, 16)),
 ((2048, 2560), (2560, 3072), (48, 49)),
 ((2048, 2560), (3072, 3584), (16, 32)),
 ((2048, 2560), (3072, 3584), (32, 48)),
 ((2048, 2560), (3072, 3584), (0, 16)),
 ((2048, 2560), (3072, 3584), (48, 49)),
 ((2048, 2560), (3584, 4096), (16, 32)),
 ((2048, 2560), (3584, 4096), (32, 48)),
 ((2048, 2560), (3584, 4096), (0, 16)),
 ((2048, 2560), (3584, 4096), (48, 49)),
 ((2048, 2560), (4096, 4608), (16, 32)),
 ((2048, 2560), (4096, 4608), (32, 48)),
 ((2048, 2560), (4096, 4608), (0, 16)),
 ((2048, 2560), (4096, 4608), (48, 49)),
 ((2048, 2560), (4608, 5120), (16, 32)),
 ((2048, 2560), (4608, 5120), (32, 48)),
 ((2048, 2560), (4608, 5120), (0, 16)),
 ((2048, 2560), (4608, 5120), (48, 49)),
 ((2048, 2560), (5120, 5632), (16, 32)),
 ((2048, 2560), (5120, 5632), (32, 48)),
 ((2048, 2560), (5120, 5632), (0, 16)),
 ((2048, 2560), (5120, 5632), (48, 49)),
 ((2048, 2560), (5632, 6144), (16, 32)),
 ((2048, 2560), (5632, 6144), (32, 48)),
 ((2048, 2560), (5632, 6144), (0, 16)),
 ((2048, 2560), (5632, 6144), (48, 49)),
 ((2048, 2560), (6144, 6656), (16, 32)),
 ((2048, 2560), (6144, 6656), (32, 48)),
 ((2048, 2560), (6144, 6656), (0, 16)),
 ((2048, 2560), (6144, 6656), (48, 49)),
 ((2048, 2560), (6656, 7168), (16, 32)),
 ((2048, 2560), (6656, 7168), (32, 48)),
 ((2048, 2560), (6656, 7168), (0, 16)),
 ((2048, 2560), (6656, 7168), (48, 49)),
 ((2048, 2560), (7168, 7680), (16, 32)),
 ((2048, 2560), (7168, 7680), (32, 48)),
 ((2048, 2560), (7168, 7680), (0, 16)),
 ((2048, 2560), (7168, 7680), (48, 49)),
 ((2048, 2560), (7680, 8192), (16, 32)),
 ((2048, 2560), (7680, 8192), (32, 48)),
 ((2048, 2560), (7680, 8192), (0, 16)),
 ((2048, 2560), (7680, 8192), (48, 49)),
 ((2048, 2560), (8192, 8704), (16, 32)),
 ((2048, 2560), (8192, 8704), (32, 48)),
 ((2048, 2560), (8192, 8704), (0, 16)),
 ((2048, 2560), (8192, 8704), (48, 49)),
 ((2048, 2560), (8704, 9216), (16, 32)),
 ((2048, 2560), (8704, 9216), (32, 48)),
 ((2048, 2560), (8704, 9216), (0, 16)),
 ((2048, 2560), (8704, 9216), (48, 49)),
 ((2048, 2560), (9216, 9728), (16, 32)),
 ((2048, 2560), (9216, 9728), (32, 48)),
 ((2048, 2560), (9216, 9728), (0, 16)),
 ((2048, 2560), (9216, 9728), (48, 49)),
 ((2048, 2560), (9728, 10240), (16, 32)),
 ((2048, 2560), (9728, 10240), (32, 48)),
 ((2048, 2560), (9728, 10240), (0, 16)),
 ((2048, 2560), (9728, 10240), (48, 49)),
 ((2048, 2560), (10240, 10752), (16, 32)),
 ((2048, 2560), (10240, 10752), (32, 48)),
 ((2048, 2560), (10240, 10752), (0, 16)),
 ((2048, 2560), (10240, 10752), (48, 49)),
 ((2048, 2560), (10752, 11264), (16, 32)),
 ((2048, 2560), (10752, 11264), (32, 48)),
 ((2048, 2560), (10752, 11264), (0, 16)),
 ((2048, 2560), (10752, 11264), (48, 49)),
 ((2048, 2560), (11264, 11776), (16, 32)),
 ((2048, 2560), (11264, 11776), (32, 48)),
 ((2048, 2560), (11264, 11776), (0, 16)),
 ((2048, 2560), (11264, 11776), (48, 49)),
 ((2048, 2560), (11776, 12288), (16, 32)),
 ((2048, 2560), (11776, 12288), (32, 48)),
 ((2048, 2560), (11776, 12288), (0, 16)),
 ((2048, 2560), (11776, 12288), (48, 49)),
 ((2048, 2560), (12288, 12800), (16, 32)),
 ((2048, 2560), (12288, 12800), (32, 48)),
 ((2048, 2560), (12288, 12800), (0, 16)),
 ((2048, 2560), (12288, 12800), (48, 49)),
 ((2048, 2560), (12800, 13312), (16, 32)),
 ((2048, 2560), (12800, 13312), (32, 48)),
 ((2048, 2560), (12800, 13312), (0, 16)),
 ((2048, 2560), (12800, 13312), (48, 49)),
 ((2048, 2560), (13312, 13824), (16, 32)),
 ((2048, 2560), (13312, 13824), (32, 48)),
 ((2048, 2560), (13312, 13824), (0, 16)),
 ((2048, 2560), (13312, 13824), (48, 49)),
 ((2048, 2560), (13824, 14336), (16, 32)),
 ((2048, 2560), (13824, 14336), (32, 48)),
 ((2048, 2560), (13824, 14336), (0, 16)),
 ((2048, 2560), (13824, 14336), (48, 49)),
 ((2048, 2560), (0, 512), (16, 32)),
 ((2048, 2560), (0, 512), (32, 48)),
 ((2048, 2560), (0, 512), (0, 16)),
 ((2048, 2560), (0, 512), (48, 49)),
 ((2048, 2560), (14336, 14723), (16, 32)),
 ((2048, 2560), (14336, 14723), (32, 48)),
 ((2048, 2560), (14336, 14723), (0, 16)),
 ((2048, 2560), (14336, 14723), (48, 49)),
 ((2560, 3072), (512, 1024), (16, 32)),
 ((2560, 3072), (512, 1024), (32, 48)),
 ((2560, 3072), (512, 1024), (0, 16)),
 ((2560, 3072), (512, 1024), (48, 49)),
 ((2560, 3072), (1024, 1536), (16, 32)),
 ((2560, 3072), (1024, 1536), (32, 48)),
 ((2560, 3072), (1024, 1536), (0, 16)),
 ((2560, 3072), (1024, 1536), (48, 49)),
 ((2560, 3072), (1536, 2048), (16, 32)),
 ((2560, 3072), (1536, 2048), (32, 48)),
 ((2560, 3072), (1536, 2048), (0, 16)),
 ((2560, 3072), (1536, 2048), (48, 49)),
 ((2560, 3072), (2048, 2560), (16, 32)),
 ((2560, 3072), (2048, 2560), (32, 48)),
 ((2560, 3072), (2048, 2560), (0, 16)),
 ((2560, 3072), (2048, 2560), (48, 49)),
 ((2560, 3072), (2560, 3072), (16, 32)),
 ((2560, 3072), (2560, 3072), (32, 48)),
 ((2560, 3072), (2560, 3072), (0, 16)),
 ((2560, 3072), (2560, 3072), (48, 49)),
 ((2560, 3072), (3072, 3584), (16, 32)),
 ((2560, 3072), (3072, 3584), (32, 48)),
 ((2560, 3072), (3072, 3584), (0, 16)),
 ((2560, 3072), (3072, 3584), (48, 49)),
 ((2560, 3072), (3584, 4096), (16, 32)),
 ((2560, 3072), (3584, 4096), (32, 48)),
 ((2560, 3072), (3584, 4096), (0, 16)),
 ((2560, 3072), (3584, 4096), (48, 49)),
 ((2560, 3072), (4096, 4608), (16, 32)),
 ((2560, 3072), (4096, 4608), (32, 48)),
 ((2560, 3072), (4096, 4608), (0, 16)),
 ((2560, 3072), (4096, 4608), (48, 49)),
 ((2560, 3072), (4608, 5120), (16, 32)),
 ((2560, 3072), (4608, 5120), (32, 48)),
 ((2560, 3072), (4608, 5120), (0, 16)),
 ((2560, 3072), (4608, 5120), (48, 49)),
 ((2560, 3072), (5120, 5632), (16, 32)),
 ((2560, 3072), (5120, 5632), (32, 48)),
 ((2560, 3072), (5120, 5632), (0, 16)),
 ((2560, 3072), (5120, 5632), (48, 49)),
 ((2560, 3072), (5632, 6144), (16, 32)),
 ((2560, 3072), (5632, 6144), (32, 48)),
 ((2560, 3072), (5632, 6144), (0, 16)),
 ((2560, 3072), (5632, 6144), (48, 49)),
 ((2560, 3072), (6144, 6656), (16, 32)),
 ((2560, 3072), (6144, 6656), (32, 48)),
 ((2560, 3072), (6144, 6656), (0, 16)),
 ((2560, 3072), (6144, 6656), (48, 49)),
 ((2560, 3072), (6656, 7168), (16, 32)),
 ((2560, 3072), (6656, 7168), (32, 48)),
 ((2560, 3072), (6656, 7168), (0, 16)),
 ((2560, 3072), (6656, 7168), (48, 49)),
 ((2560, 3072), (7168, 7680), (16, 32)),
 ((2560, 3072), (7168, 7680), (32, 48)),
 ((2560, 3072), (7168, 7680), (0, 16)),
 ((2560, 3072), (7168, 7680), (48, 49)),
 ((2560, 3072), (7680, 8192), (16, 32)),
 ((2560, 3072), (7680, 8192), (32, 48)),
 ((2560, 3072), (7680, 8192), (0, 16)),
 ((2560, 3072), (7680, 8192), (48, 49)),
 ((2560, 3072), (8192, 8704), (16, 32)),
 ((2560, 3072), (8192, 8704), (32, 48)),
 ((2560, 3072), (8192, 8704), (0, 16)),
 ((2560, 3072), (8192, 8704), (48, 49)),
 ((2560, 3072), (8704, 9216), (16, 32)),
 ((2560, 3072), (8704, 9216), (32, 48)),
 ((2560, 3072), (8704, 9216), (0, 16)),
 ((2560, 3072), (8704, 9216), (48, 49)),
 ((2560, 3072), (9216, 9728), (16, 32)),
 ((2560, 3072), (9216, 9728), (32, 48)),
 ((2560, 3072), (9216, 9728), (0, 16)),
 ((2560, 3072), (9216, 9728), (48, 49)),
 ((2560, 3072), (9728, 10240), (16, 32)),
 ((2560, 3072), (9728, 10240), (32, 48)),
 ((2560, 3072), (9728, 10240), (0, 16)),
 ((2560, 3072), (9728, 10240), (48, 49)),
 ((2560, 3072), (10240, 10752), (16, 32)),
 ((2560, 3072), (10240, 10752), (32, 48)),
 ((2560, 3072), (10240, 10752), (0, 16)),
 ((2560, 3072), (10240, 10752), (48, 49)),
 ((2560, 3072), (10752, 11264), (16, 32)),
 ((2560, 3072), (10752, 11264), (32, 48)),
 ((2560, 3072), (10752, 11264), (0, 16)),
 ((2560, 3072), (10752, 11264), (48, 49)),
 ((2560, 3072), (11264, 11776), (16, 32)),
 ((2560, 3072), (11264, 11776), (32, 48)),
 ((2560, 3072), (11264, 11776), (0, 16)),
 ((2560, 3072), (11264, 11776), (48, 49)),
 ((2560, 3072), (11776, 12288), (16, 32)),
 ((2560, 3072), (11776, 12288), (32, 48)),
 ((2560, 3072), (11776, 12288), (0, 16)),
 ((2560, 3072), (11776, 12288), (48, 49)),
 ((2560, 3072), (12288, 12800), (16, 32)),
 ((2560, 3072), (12288, 12800), (32, 48)),
 ((2560, 3072), (12288, 12800), (0, 16)),
 ((2560, 3072), (12288, 12800), (48, 49)),
 ((2560, 3072), (12800, 13312), (16, 32)),
 ((2560, 3072), (12800, 13312), (32, 48)),
 ((2560, 3072), (12800, 13312), (0, 16)),
 ((2560, 3072), (12800, 13312), (48, 49)),
 ((2560, 3072), (13312, 13824), (16, 32)),
 ((2560, 3072), (13312, 13824), (32, 48)),
 ((2560, 3072), (13312, 13824), (0, 16)),
 ((2560, 3072), (13312, 13824), (48, 49)),
 ((2560, 3072), (13824, 14336), (16, 32)),
 ((2560, 3072), (13824, 14336), (32, 48)),
 ((2560, 3072), (13824, 14336), (0, 16)),
 ((2560, 3072), (13824, 14336), (48, 49)),
 ((2560, 3072), (0, 512), (16, 32)),
 ((2560, 3072), (0, 512), (32, 48)),
 ((2560, 3072), (0, 512), (0, 16)),
 ((2560, 3072), (0, 512), (48, 49)),
 ((2560, 3072), (14336, 14723), (16, 32)),
 ((2560, 3072), (14336, 14723), (32, 48)),
 ((2560, 3072), (14336, 14723), (0, 16)),
 ((2560, 3072), (14336, 14723), (48, 49)),
 ((3072, 3584), (512, 1024), (16, 32)),
 ((3072, 3584), (512, 1024), (32, 48)),
 ((3072, 3584), (512, 1024), (0, 16)),
 ((3072, 3584), (512, 1024), (48, 49)),
 ((3072, 3584), (1024, 1536), (16, 32)),
 ((3072, 3584), (1024, 1536), (32, 48)),
 ((3072, 3584), (1024, 1536), (0, 16)),
 ((3072, 3584), (1024, 1536), (48, 49)),
 ((3072, 3584), (1536, 2048), (16, 32)),
 ((3072, 3584), (1536, 2048), (32, 48)),
 ((3072, 3584), (1536, 2048), (0, 16)),
 ((3072, 3584), (1536, 2048), (48, 49)),
 ((3072, 3584), (2048, 2560), (16, 32)),
 ((3072, 3584), (2048, 2560), (32, 48)),
 ((3072, 3584), (2048, 2560), (0, 16)),
 ((3072, 3584), (2048, 2560), (48, 49)),
 ((3072, 3584), (2560, 3072), (16, 32)),
 ((3072, 3584), (2560, 3072), (32, 48)),
 ((3072, 3584), (2560, 3072), (0, 16)),
 ((3072, 3584), (2560, 3072), (48, 49)),
 ((3072, 3584), (3072, 3584), (16, 32)),
 ((3072, 3584), (3072, 3584), (32, 48)),
 ((3072, 3584), (3072, 3584), (0, 16)),
 ((3072, 3584), (3072, 3584), (48, 49)),
 ((3072, 3584), (3584, 4096), (16, 32)),
 ((3072, 3584), (3584, 4096), (32, 48)),
 ((3072, 3584), (3584, 4096), (0, 16)),
 ((3072, 3584), (3584, 4096), (48, 49)),
 ((3072, 3584), (4096, 4608), (16, 32)),
 ((3072, 3584), (4096, 4608), (32, 48)),
 ((3072, 3584), (4096, 4608), (0, 16)),
 ((3072, 3584), (4096, 4608), (48, 49)),
 ((3072, 3584), (4608, 5120), (16, 32)),
 ((3072, 3584), (4608, 5120), (32, 48)),
 ((3072, 3584), (4608, 5120), (0, 16)),
 ((3072, 3584), (4608, 5120), (48, 49)),
 ((3072, 3584), (5120, 5632), (16, 32)),
 ((3072, 3584), (5120, 5632), (32, 48)),
 ((3072, 3584), (5120, 5632), (0, 16)),
 ((3072, 3584), (5120, 5632), (48, 49)),
 ((3072, 3584), (5632, 6144), (16, 32)),
 ((3072, 3584), (5632, 6144), (32, 48)),
 ((3072, 3584), (5632, 6144), (0, 16)),
 ((3072, 3584), (5632, 6144), (48, 49)),
 ((3072, 3584), (6144, 6656), (16, 32)),
 ((3072, 3584), (6144, 6656), (32, 48)),
 ((3072, 3584), (6144, 6656), (0, 16)),
 ((3072, 3584), (6144, 6656), (48, 49)),
 ((3072, 3584), (6656, 7168), (16, 32)),
 ((3072, 3584), (6656, 7168), (32, 48)),
 ((3072, 3584), (6656, 7168), (0, 16)),
 ((3072, 3584), (6656, 7168), (48, 49)),
 ((3072, 3584), (7168, 7680), (16, 32)),
 ((3072, 3584), (7168, 7680), (32, 48)),
 ((3072, 3584), (7168, 7680), (0, 16)),
 ((3072, 3584), (7168, 7680), (48, 49)),
 ((3072, 3584), (7680, 8192), (16, 32)),
 ((3072, 3584), (7680, 8192), (32, 48)),
 ((3072, 3584), (7680, 8192), (0, 16)),
 ((3072, 3584), (7680, 8192), (48, 49)),
 ((3072, 3584), (8192, 8704), (16, 32)),
 ((3072, 3584), (8192, 8704), (32, 48)),
 ((3072, 3584), (8192, 8704), (0, 16)),
 ((3072, 3584), (8192, 8704), (48, 49)),
 ((3072, 3584), (8704, 9216), (16, 32)),
 ((3072, 3584), (8704, 9216), (32, 48)),
 ((3072, 3584), (8704, 9216), (0, 16)),
 ((3072, 3584), (8704, 9216), (48, 49)),
 ((3072, 3584), (9216, 9728), (16, 32)),
 ((3072, 3584), (9216, 9728), (32, 48)),
 ((3072, 3584), (9216, 9728), (0, 16)),
 ((3072, 3584), (9216, 9728), (48, 49)),
 ((3072, 3584), (9728, 10240), (16, 32)),
 ((3072, 3584), (9728, 10240), (32, 48)),
 ((3072, 3584), (9728, 10240), (0, 16)),
 ((3072, 3584), (9728, 10240), (48, 49)),
 ((3072, 3584), (10240, 10752), (16, 32)),
 ((3072, 3584), (10240, 10752), (32, 48)),
 ((3072, 3584), (10240, 10752), (0, 16)),
 ((3072, 3584), (10240, 10752), (48, 49)),
 ((3072, 3584), (10752, 11264), (16, 32)),
 ((3072, 3584), (10752, 11264), (32, 48)),
 ((3072, 3584), (10752, 11264), (0, 16)),
 ((3072, 3584), (10752, 11264), (48, 49)),
 ((3072, 3584), (11264, 11776), (16, 32)),
 ((3072, 3584), (11264, 11776), (32, 48)),
 ((3072, 3584), (11264, 11776), (0, 16)),
 ((3072, 3584), (11264, 11776), (48, 49)),
 ((3072, 3584), (11776, 12288), (16, 32)),
 ((3072, 3584), (11776, 12288), (32, 48)),
 ((3072, 3584), (11776, 12288), (0, 16)),
 ((3072, 3584), (11776, 12288), (48, 49)),
 ((3072, 3584), (12288, 12800), (16, 32)),
 ((3072, 3584), (12288, 12800), (32, 48)),
 ((3072, 3584), (12288, 12800), (0, 16)),
 ((3072, 3584), (12288, 12800), (48, 49)),
 ((3072, 3584), (12800, 13312), (16, 32)),
 ((3072, 3584), (12800, 13312), (32, 48)),
 ((3072, 3584), (12800, 13312), (0, 16)),
 ((3072, 3584), (12800, 13312), (48, 49)),
 ((3072, 3584), (13312, 13824), (16, 32)),
 ((3072, 3584), (13312, 13824), (32, 48)),
 ((3072, 3584), (13312, 13824), (0, 16)),
 ((3072, 3584), (13312, 13824), (48, 49)),
 ((3072, 3584), (13824, 14336), (16, 32)),
 ((3072, 3584), (13824, 14336), (32, 48)),
 ((3072, 3584), (13824, 14336), (0, 16)),
 ((3072, 3584), (13824, 14336), (48, 49)),
 ((3072, 3584), (0, 512), (16, 32)),
 ((3072, 3584), (0, 512), (32, 48)),
 ((3072, 3584), (0, 512), (0, 16)),
 ((3072, 3584), (0, 512), (48, 49)),
 ((3072, 3584), (14336, 14723), (16, 32)),
 ((3072, 3584), (14336, 14723), (32, 48)),
 ((3072, 3584), (14336, 14723), (0, 16)),
 ((3072, 3584), (14336, 14723), (48, 49)),
 ((3584, 4096), (512, 1024), (16, 32)),
 ((3584, 4096), (512, 1024), (32, 48)),
 ((3584, 4096), (512, 1024), (0, 16)),
 ((3584, 4096), (512, 1024), (48, 49)),
 ((3584, 4096), (1024, 1536), (16, 32)),
 ((3584, 4096), (1024, 1536), (32, 48)),
 ((3584, 4096), (1024, 1536), (0, 16)),
 ((3584, 4096), (1024, 1536), (48, 49)),
 ((3584, 4096), (1536, 2048), (16, 32)),
 ((3584, 4096), (1536, 2048), (32, 48)),
 ((3584, 4096), (1536, 2048), (0, 16)),
 ((3584, 4096), (1536, 2048), (48, 49)),
 ((3584, 4096), (2048, 2560), (16, 32)),
 ((3584, 4096), (2048, 2560), (32, 48)),
 ((3584, 4096), (2048, 2560), (0, 16)),
 ((3584, 4096), (2048, 2560), (48, 49)),
 ((3584, 4096), (2560, 3072), (16, 32)),
 ((3584, 4096), (2560, 3072), (32, 48)),
 ((3584, 4096), (2560, 3072), (0, 16)),
 ((3584, 4096), (2560, 3072), (48, 49)),
 ((3584, 4096), (3072, 3584), (16, 32)),
 ((3584, 4096), (3072, 3584), (32, 48)),
 ((3584, 4096), (3072, 3584), (0, 16)),
 ((3584, 4096), (3072, 3584), (48, 49)),
 ((3584, 4096), (3584, 4096), (16, 32)),
 ((3584, 4096), (3584, 4096), (32, 48)),
 ((3584, 4096), (3584, 4096), (0, 16)),
 ((3584, 4096), (3584, 4096), (48, 49)),
 ((3584, 4096), (4096, 4608), (16, 32)),
 ((3584, 4096), (4096, 4608), (32, 48)),
 ((3584, 4096), (4096, 4608), (0, 16)),
 ((3584, 4096), (4096, 4608), (48, 49)),
 ((3584, 4096), (4608, 5120), (16, 32)),
 ((3584, 4096), (4608, 5120), (32, 48)),
 ((3584, 4096), (4608, 5120), (0, 16)),
 ((3584, 4096), (4608, 5120), (48, 49)),
 ((3584, 4096), (5120, 5632), (16, 32)),
 ((3584, 4096), (5120, 5632), (32, 48)),
 ((3584, 4096), (5120, 5632), (0, 16)),
 ((3584, 4096), (5120, 5632), (48, 49)),
 ((3584, 4096), (5632, 6144), (16, 32)),
 ((3584, 4096), (5632, 6144), (32, 48)),
 ((3584, 4096), (5632, 6144), (0, 16)),
 ((3584, 4096), (5632, 6144), (48, 49)),
 ((3584, 4096), (6144, 6656), (16, 32)),
 ((3584, 4096), (6144, 6656), (32, 48)),
 ((3584, 4096), (6144, 6656), (0, 16)),
 ((3584, 4096), (6144, 6656), (48, 49)),
 ((3584, 4096), (6656, 7168), (16, 32)),
 ((3584, 4096), (6656, 7168), (32, 48)),
 ((3584, 4096), (6656, 7168), (0, 16)),
 ((3584, 4096), (6656, 7168), (48, 49)),
 ((3584, 4096), (7168, 7680), (16, 32)),
 ((3584, 4096), (7168, 7680), (32, 48)),
 ((3584, 4096), (7168, 7680), (0, 16)),
 ((3584, 4096), (7168, 7680), (48, 49)),
 ((3584, 4096), (7680, 8192), (16, 32)),
 ((3584, 4096), (7680, 8192), (32, 48)),
 ((3584, 4096), (7680, 8192), (0, 16)),
 ((3584, 4096), (7680, 8192), (48, 49)),
 ((3584, 4096), (8192, 8704), (16, 32)),
 ((3584, 4096), (8192, 8704), (32, 48)),
 ((3584, 4096), (8192, 8704), (0, 16)),
 ((3584, 4096), (8192, 8704), (48, 49)),
 ((3584, 4096), (8704, 9216), (16, 32)),
 ((3584, 4096), (8704, 9216), (32, 48)),
 ((3584, 4096), (8704, 9216), (0, 16)),
 ((3584, 4096), (8704, 9216), (48, 49)),
 ((3584, 4096), (9216, 9728), (16, 32)),
 ((3584, 4096), (9216, 9728), (32, 48)),
 ((3584, 4096), (9216, 9728), (0, 16)),
 ((3584, 4096), (9216, 9728), (48, 49)),
 ((3584, 4096), (9728, 10240), (16, 32)),
 ((3584, 4096), (9728, 10240), (32, 48)),
 ((3584, 4096), (9728, 10240), (0, 16)),
 ((3584, 4096), (9728, 10240), (48, 49)),
 ((3584, 4096), (10240, 10752), (16, 32)),
 ((3584, 4096), (10240, 10752), (32, 48)),
 ((3584, 4096), (10240, 10752), (0, 16)),
 ((3584, 4096), (10240, 10752), (48, 49)),
 ((3584, 4096), (10752, 11264), (16, 32)),
 ((3584, 4096), (10752, 11264), (32, 48)),
 ((3584, 4096), (10752, 11264), (0, 16)),
 ((3584, 4096), (10752, 11264), (48, 49)),
 ((3584, 4096), (11264, 11776), (16, 32)),
 ((3584, 4096), (11264, 11776), (32, 48)),
 ((3584, 4096), (11264, 11776), (0, 16)),
 ((3584, 4096), (11264, 11776), (48, 49)),
 ((3584, 4096), (11776, 12288), (16, 32)),
 ((3584, 4096), (11776, 12288), (32, 48)),
 ((3584, 4096), (11776, 12288), (0, 16)),
 ((3584, 4096), (11776, 12288), (48, 49)),
 ((3584, 4096), (12288, 12800), (16, 32)),
 ((3584, 4096), (12288, 12800), (32, 48)),
 ((3584, 4096), (12288, 12800), (0, 16)),
 ((3584, 4096), (12288, 12800), (48, 49)),
 ((3584, 4096), (12800, 13312), (16, 32)),
 ((3584, 4096), (12800, 13312), (32, 48)),
 ((3584, 4096), (12800, 13312), (0, 16)),
 ((3584, 4096), (12800, 13312), (48, 49)),
 ((3584, 4096), (13312, 13824), (16, 32)),
 ((3584, 4096), (13312, 13824), (32, 48)),
 ((3584, 4096), (13312, 13824), (0, 16)),
 ((3584, 4096), (13312, 13824), (48, 49)),
 ((3584, 4096), (13824, 14336), (16, 32)),
 ((3584, 4096), (13824, 14336), (32, 48)),
 ((3584, 4096), (13824, 14336), (0, 16)),
 ((3584, 4096), (13824, 14336), (48, 49)),
 ((3584, 4096), (0, 512), (16, 32)),
 ((3584, 4096), (0, 512), (32, 48)),
 ((3584, 4096), (0, 512), (0, 16)),
 ((3584, 4096), (0, 512), (48, 49)),
 ((3584, 4096), (14336, 14723), (16, 32)),
 ((3584, 4096), (14336, 14723), (32, 48)),
 ((3584, 4096), (14336, 14723), (0, 16)),
 ((3584, 4096), (14336, 14723), (48, 49)),
 ((4096, 4608), (512, 1024), (16, 32)),
 ((4096, 4608), (512, 1024), (32, 48)),
 ((4096, 4608), (512, 1024), (0, 16)),
 ((4096, 4608), (512, 1024), (48, 49)),
 ((4096, 4608), (1024, 1536), (16, 32)),
 ((4096, 4608), (1024, 1536), (32, 48)),
 ((4096, 4608), (1024, 1536), (0, 16)),
 ((4096, 4608), (1024, 1536), (48, 49)),
 ((4096, 4608), (1536, 2048), (16, 32)),
 ((4096, 4608), (1536, 2048), (32, 48)),
 ((4096, 4608), (1536, 2048), (0, 16)),
 ((4096, 4608), (1536, 2048), (48, 49)),
 ((4096, 4608), (2048, 2560), (16, 32)),
 ((4096, 4608), (2048, 2560), (32, 48)),
 ((4096, 4608), (2048, 2560), (0, 16)),
 ((4096, 4608), (2048, 2560), (48, 49)),
 ((4096, 4608), (2560, 3072), (16, 32)),
 ((4096, 4608), (2560, 3072), (32, 48)),
 ((4096, 4608), (2560, 3072), (0, 16)),
 ((4096, 4608), (2560, 3072), (48, 49)),
 ((4096, 4608), (3072, 3584), (16, 32)),
 ((4096, 4608), (3072, 3584), (32, 48)),
 ((4096, 4608), (3072, 3584), (0, 16)),
 ((4096, 4608), (3072, 3584), (48, 49)),
 ((4096, 4608), (3584, 4096), (16, 32)),
 ((4096, 4608), (3584, 4096), (32, 48)),
 ((4096, 4608), (3584, 4096), (0, 16)),
 ((4096, 4608), (3584, 4096), (48, 49)),
 ((4096, 4608), (4096, 4608), (16, 32)),
 ((4096, 4608), (4096, 4608), (32, 48)),
 ((4096, 4608), (4096, 4608), (0, 16)),
 ((4096, 4608), (4096, 4608), (48, 49)),
 ((4096, 4608), (4608, 5120), (16, 32)),
 ((4096, 4608), (4608, 5120), (32, 48)),
 ((4096, 4608), (4608, 5120), (0, 16)),
 ((4096, 4608), (4608, 5120), (48, 49)),
 ((4096, 4608), (5120, 5632), (16, 32)),
 ((4096, 4608), (5120, 5632), (32, 48)),
 ((4096, 4608), (5120, 5632), (0, 16)),
 ((4096, 4608), (5120, 5632), (48, 49)),
 ((4096, 4608), (5632, 6144), (16, 32)),
 ((4096, 4608), (5632, 6144), (32, 48)),
 ((4096, 4608), (5632, 6144), (0, 16)),
 ((4096, 4608), (5632, 6144), (48, 49)),
 ((4096, 4608), (6144, 6656), (16, 32)),
 ((4096, 4608), (6144, 6656), (32, 48)),
 ((4096, 4608), (6144, 6656), (0, 16)),
 ((4096, 4608), (6144, 6656), (48, 49)),
 ((4096, 4608), (6656, 7168), (16, 32)),
 ((4096, 4608), (6656, 7168), (32, 48)),
 ((4096, 4608), (6656, 7168), (0, 16)),
 ((4096, 4608), (6656, 7168), (48, 49)),
 ((4096, 4608), (7168, 7680), (16, 32)),
 ((4096, 4608), (7168, 7680), (32, 48)),
 ((4096, 4608), (7168, 7680), (0, 16)),
 ((4096, 4608), (7168, 7680), (48, 49)),
 ((4096, 4608), (7680, 8192), (16, 32)),
 ((4096, 4608), (7680, 8192), (32, 48)),
 ((4096, 4608), (7680, 8192), (0, 16)),
 ((4096, 4608), (7680, 8192), (48, 49)),
 ((4096, 4608), (8192, 8704), (16, 32)),
 ((4096, 4608), (8192, 8704), (32, 48)),
 ((4096, 4608), (8192, 8704), (0, 16)),
 ((4096, 4608), (8192, 8704), (48, 49)),
 ((4096, 4608), (8704, 9216), (16, 32)),
 ((4096, 4608), (8704, 9216), (32, 48)),
 ((4096, 4608), (8704, 9216), (0, 16)),
 ((4096, 4608), (8704, 9216), (48, 49)),
 ((4096, 4608), (9216, 9728), (16, 32)),
 ((4096, 4608), (9216, 9728), (32, 48)),
 ((4096, 4608), (9216, 9728), (0, 16)),
 ((4096, 4608), (9216, 9728), (48, 49)),
 ((4096, 4608), (9728, 10240), (16, 32)),
 ((4096, 4608), (9728, 10240), (32, 48)),
 ((4096, 4608), (9728, 10240), (0, 16)),
 ((4096, 4608), (9728, 10240), (48, 49)),
 ((4096, 4608), (10240, 10752), (16, 32)),
 ((4096, 4608), (10240, 10752), (32, 48)),
 ((4096, 4608), (10240, 10752), (0, 16)),
 ((4096, 4608), (10240, 10752), (48, 49)),
 ((4096, 4608), (10752, 11264), (16, 32)),
 ((4096, 4608), (10752, 11264), (32, 48)),
 ((4096, 4608), (10752, 11264), (0, 16)),
 ((4096, 4608), (10752, 11264), (48, 49)),
 ((4096, 4608), (11264, 11776), (16, 32)),
 ((4096, 4608), (11264, 11776), (32, 48)),
 ((4096, 4608), (11264, 11776), (0, 16)),
 ((4096, 4608), (11264, 11776), (48, 49)),
 ((4096, 4608), (11776, 12288), (16, 32)),
 ((4096, 4608), (11776, 12288), (32, 48)),
 ((4096, 4608), (11776, 12288), (0, 16)),
 ((4096, 4608), (11776, 12288), (48, 49)),
 ((4096, 4608), (12288, 12800), (16, 32)),
 ((4096, 4608), (12288, 12800), (32, 48)),
 ((4096, 4608), (12288, 12800), (0, 16)),
 ((4096, 4608), (12288, 12800), (48, 49)),
 ((4096, 4608), (12800, 13312), (16, 32)),
 ((4096, 4608), (12800, 13312), (32, 48)),
 ((4096, 4608), (12800, 13312), (0, 16)),
 ((4096, 4608), (12800, 13312), (48, 49)),
 ((4096, 4608), (13312, 13824), (16, 32)),
 ((4096, 4608), (13312, 13824), (32, 48)),
 ((4096, 4608), (13312, 13824), (0, 16)),
 ((4096, 4608), (13312, 13824), (48, 49)),
 ((4096, 4608), (13824, 14336), (16, 32)),
 ((4096, 4608), (13824, 14336), (32, 48)),
 ((4096, 4608), (13824, 14336), (0, 16)),
 ((4096, 4608), (13824, 14336), (48, 49)),
 ((4096, 4608), (0, 512), (16, 32)),
 ((4096, 4608), (0, 512), (32, 48)),
 ((4096, 4608), (0, 512), (0, 16)),
 ((4096, 4608), (0, 512), (48, 49)),
 ((4096, 4608), (14336, 14723), (16, 32)),
 ((4096, 4608), (14336, 14723), (32, 48)),
 ((4096, 4608), (14336, 14723), (0, 16)),
 ((4096, 4608), (14336, 14723), (48, 49)),
 ((4608, 5120), (512, 1024), (16, 32)),
 ((4608, 5120), (512, 1024), (32, 48)),
 ((4608, 5120), (512, 1024), (0, 16)),
 ((4608, 5120), (512, 1024), (48, 49)),
 ((4608, 5120), (1024, 1536), (16, 32)),
 ((4608, 5120), (1024, 1536), (32, 48)),
 ((4608, 5120), (1024, 1536), (0, 16)),
 ((4608, 5120), (1024, 1536), (48, 49)),
 ((4608, 5120), (1536, 2048), (16, 32)),
 ((4608, 5120), (1536, 2048), (32, 48)),
 ((4608, 5120), (1536, 2048), (0, 16)),
 ((4608, 5120), (1536, 2048), (48, 49)),
 ((4608, 5120), (2048, 2560), (16, 32)),
 ((4608, 5120), (2048, 2560), (32, 48)),
 ((4608, 5120), (2048, 2560), (0, 16)),
 ((4608, 5120), (2048, 2560), (48, 49)),
 ((4608, 5120), (2560, 3072), (16, 32)),
 ((4608, 5120), (2560, 3072), (32, 48)),
 ((4608, 5120), (2560, 3072), (0, 16)),
 ((4608, 5120), (2560, 3072), (48, 49)),
 ((4608, 5120), (3072, 3584), (16, 32)),
 ((4608, 5120), (3072, 3584), (32, 48)),
 ((4608, 5120), (3072, 3584), (0, 16)),
 ((4608, 5120), (3072, 3584), (48, 49)),
 ((4608, 5120), (3584, 4096), (16, 32)),
 ((4608, 5120), (3584, 4096), (32, 48)),
 ((4608, 5120), (3584, 4096), (0, 16)),
 ((4608, 5120), (3584, 4096), (48, 49)),
 ((4608, 5120), (4096, 4608), (16, 32)),
 ((4608, 5120), (4096, 4608), (32, 48)),
 ((4608, 5120), (4096, 4608), (0, 16)),
 ((4608, 5120), (4096, 4608), (48, 49)),
 ((4608, 5120), (4608, 5120), (16, 32)),
 ((4608, 5120), (4608, 5120), (32, 48)),
 ((4608, 5120), (4608, 5120), (0, 16)),
 ((4608, 5120), (4608, 5120), (48, 49)),
 ((4608, 5120), (5120, 5632), (16, 32)),
 ((4608, 5120), (5120, 5632), (32, 48)),
 ((4608, 5120), (5120, 5632), (0, 16)),
 ((4608, 5120), (5120, 5632), (48, 49)),
 ((4608, 5120), (5632, 6144), (16, 32)),
 ((4608, 5120), (5632, 6144), (32, 48)),
 ((4608, 5120), (5632, 6144), (0, 16)),
 ((4608, 5120), (5632, 6144), (48, 49)),
 ((4608, 5120), (6144, 6656), (16, 32)),
 ((4608, 5120), (6144, 6656), (32, 48)),
 ((4608, 5120), (6144, 6656), (0, 16)),
 ((4608, 5120), (6144, 6656), (48, 49)),
 ((4608, 5120), (6656, 7168), (16, 32)),
 ((4608, 5120), (6656, 7168), (32, 48)),
 ((4608, 5120), (6656, 7168), (0, 16)),
 ((4608, 5120), (6656, 7168), (48, 49)),
 ((4608, 5120), (7168, 7680), (16, 32)),
 ((4608, 5120), (7168, 7680), (32, 48)),
 ((4608, 5120), (7168, 7680), (0, 16)),
 ((4608, 5120), (7168, 7680), (48, 49)),
 ((4608, 5120), (7680, 8192), (16, 32)),
 ((4608, 5120), (7680, 8192), (32, 48)),
 ((4608, 5120), (7680, 8192), (0, 16)),
 ((4608, 5120), (7680, 8192), (48, 49)),
 ((4608, 5120), (8192, 8704), (16, 32)),
 ((4608, 5120), (8192, 8704), (32, 48)),
 ((4608, 5120), (8192, 8704), (0, 16)),
 ((4608, 5120), (8192, 8704), (48, 49)),
 ((4608, 5120), (8704, 9216), (16, 32)),
 ((4608, 5120), (8704, 9216), (32, 48)),
 ((4608, 5120), (8704, 9216), (0, 16)),
 ((4608, 5120), (8704, 9216), (48, 49)),
 ((4608, 5120), (9216, 9728), (16, 32)),
 ((4608, 5120), (9216, 9728), (32, 48)),
 ((4608, 5120), (9216, 9728), (0, 16)),
 ((4608, 5120), (9216, 9728), (48, 49)),
 ...]

In [55]:
rid = []
for b in blocks:
    tmp = rem.get_ids_in_region(anno_res, 0, b[0], b[1], b[2], [0,1])
    if tmp != []:
         rid = rid + tmp
                                                                                                     
u = np.unique(np.asarray(rid))

In [ ]:
def getID(a,b,c):
    out = rem.get_ids_in_region(anno_res, 0, a, b, c, [0,1])
    return(out)
    
with ThreadPool(4) as tpb:
        #out = tpb.map(getID, ba, bb, bc)
        out = tpb.starmap(getID, blocks)

In [54]:
rem.get_bounding_box(anno_res, 0, 2, bb_type = 'tight')


Out[54]:
{'t_range': [0, 1],
 'x_range': [7304, 8239],
 'y_range': [5681, 6642],
 'z_range': [27, 48]}

In [ ]:
## bounding box for annotation_i
bb = [rem.get_bounding_box(anno_res, 0,ui, 'tight') for ui in u]
                                                                                                     
for i in range(len(bb)):
    bb[i]["id"] = u[i]
                                                                                                     
A = [(rem.get_cutout(
      anno_res, 0, bb[i]["x_range"], 
      bb[i]["y_range"], bb[i]["z_range"], 
      id_list = [bb[i]['id']]) != bb[i]['id']).astype(int) 
    for i in range(len(bb))] 
                                                                                                     
#Bmeans = [np.int32(np.round(np.mean(np.asarray(np.where(A[i] == True)),1))) for i in range(len(A))]
Bmeans = [np.int32(np.round(np.mean(np.asarray(np.where(A[i] == 1)),1))) for i in range(len(A))]

Bglobal = []
for i in range(len(bb)):
    ad1 = np.asarray([bb[i]['z_range'][0], bb[i]['y_range'][0], bb[i]['x_range'][0]])
    Bglobal.append(Bmeans[i] + ad1)
    
ColMin = np.asarray(bf)
ColMax = np.asarray([ex['z'] - (bf[0] + 1),  # The z index is inclusive
                     ex['y'] - (bf[1] + 1), 
                     ex['x'] - (bf[2] + 1)])
                                                                                                     
m = [Bglobal[i] >= ColMin for i in range(len(Bglobal))]
M = [Bglobal[i] <= ColMax for i in range(len(Bglobal))]
mm = [np.all(m[i]) for i in range(len(m)) ]
MM = [np.all(M[i]) for i in range(len(M)) ]

In [15]:
Bcon = []
conID = []
con = [np.asarray(mm[j] and MM[j]) for j in range(len(mm))]
for i in range(len(Bglobal)):
    if con[i]: 
        Bcon.append(Bglobal[i])
        conID.append(bb[i]['id'])

In [33]:
conID


Out[33]:
[453, 483, 528, 531, 647, 648, 650]

In [43]:
[Bcon[i][2] - bf[2], Bcon[i][2] + bf[2]+1]


Out[43]:
[777, 994]

In [44]:
tmp = rem.get_cutout(anno_res, 0, 
       [Bcon[i][2] - bf[2], Bcon[i][2] + bf[2]+1],
       [Bcon[i][1] - bf[1], Bcon[i][1] + bf[1]+1],
       [Bcon[i][0] - bf[0], Bcon[i][0] + bf[0]+1])

In [65]:
AA = [(rem.get_cutout(
       anno_res, 0, 
       [Bcon[i][2] - bf[2], Bcon[i][2] + bf[2]+1],
       [Bcon[i][1] - bf[1], Bcon[i][1] + bf[1]+1],
       [Bcon[i][0] - bf[0], Bcon[i][0] + bf[0]+1],
       id_list = [conID[i]]) == conID[i]).astype(np.int8) for i in range(len(Bcon))]

In [66]:
AA[0].dtype


Out[66]:
dtype('int8')

In [67]:
sns.heatmap(AA[0][6,::])


Out[67]:
<matplotlib.axes._subplots.AxesSubplot at 0x107b29a58>

In [ ]:
if CHAN_NAMES is None:
            #CHAN_NAMES = ['DAPI1st', 'DAPI2nd', 'DAPI3rd',
    	#      'GABA488', 'GAD647', 'gephyrin594', 'GS594', 'MBP488',
            #      'NR1594', 'PSD95_488', 'Synapsin647', 'VGluT1_647']
            CHAN_NAMES = ['bIIItubulin', 'DAPI_2nd', 'DAPI_3rd',
                    'GABA', 'GAD2', 'gephyrin', 'NR1', 'PSDr',
                    'synapsin', 'VGAT', 'VGluT1'] 
                                                                                                     
ChanList = []
                                                                                                     
## For getting masked bounding box around centroid of annotation
for ch in CHAN_NAMES:
    di = [{
          'rem': rem,
          'ch_rsc':
            ChannelResource(ch,COLL_NAME,EXP_NAME,'image',datatype='uint8'),
          'ch'  : ch,
          'res' : 0,
          'xrng': [Bcon[i][2] - bf[2], Bcon[i][2] + bf[2] + 1], 
          'yrng': [Bcon[i][1] - bf[1], Bcon[i][1] + bf[1] + 1], 
          'zrng': [Bcon[i][0] - bf[0], Bcon[i][0] + bf[0] + 1], 
          'mask': AA[i]
         } for i in range(len(Bcon))]
    with ThreadPool(num_threads) as tp:
        out = tp.map(toolbox.getMaskData, di)
        print(ch) ##DEBUG
        sys.stdout.flush() #DEBUG
    ChanList.append(np.asarray(out))
cubes = np.asarray(ChanList)
loc = np.asarray(Bcon)