In [25]:
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
import ndpull
CONFIG_FILE = 'config.ini'

In [37]:
COLL_NAME      = 'collman_nomads' 
EXP_NAME       = 'nomads_predictions'
CH_NAME        = 'M247514_Rorb_1_light_z_0_101_y_8800_9200_x_4500_4900_All'
CONFIG_FILE    = 'config.ini'

In [39]:
config = configparser.ConfigParser()
config.read(CONFIG_FILE)
TOKEN = config['Default']['token']
boss_url = ''.join( ( config['Default']['protocol'],'://',config['Default']['host'],'/v1/' ) )
#intern
rem = BossRemote(CONFIG_FILE)

ch_res = ChannelResource(CH_NAME, COLL_NAME, EXP_NAME, 'image', datatype='uint16')

In [40]:
rem.get_metadata(ch_res,['test'])


---------------------------------------------------------------------------
HTTPErrorList                             Traceback (most recent call last)
<ipython-input-40-ca0ebecbe4cc> in <module>()
----> 1 rem.get_metadata(ch_res,['test'])

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/intern/remote/boss/remote.py in get_metadata(self, resource, keys)
    815         """
    816         self.metadata_service.set_auth(self._token_metadata)
--> 817         return self.metadata_service.get(resource, keys)
    818 
    819     def update_metadata(self, resource, keys_vals):

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/intern/service/boss/metadata.py in get(self, resource, keys)
     85         return self.service.get(
     86             resource, keys, self.url_prefix, self.auth, self.session,
---> 87             self.session_send_opts)
     88 
     89     def update(self, resource, keys_vals):

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/intern/service/boss/v1/metadata.py in get(self, resource, keys, url_prefix, auth, session, send_opts)
    133 
    134         if not success:
--> 135             raise exc
    136 
    137         return resDict

HTTPErrorList: (HTTPErrorList(...), 'At least one key-value update failed.')
	Get failed on M247514_Rorb_1_light_z_0_101_y_8800_9200_x_4500_4900_All, got HTTP response: (404) - {"status": 404, "code": 4000, "message": "Channel M247514_Rorb_1_light_z_0_101_y_8800_9200_x_4500_4900_All not found"}

In [27]:
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))
                                                                                                     
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))
u_old = u
                                                                                                     
## 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]

blocks[0]
b0 = ((0, ))


Out[27]:
((512, 1024), (512, 1024), (16, 32))

In [15]:
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.uint32(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 [18]:
A[0].shape


Out[18]:
(2, 65, 49)

In [20]:
Bglobal[0]


Out[20]:
array([  12, 1026,  882])

In [ ]: