diff --git a/model_server/base/roiset.py b/model_server/base/roiset.py index 6ef46ed0779e306d0b6b1e4137f065f394d21e57..7cd327ae2403509a5486af4eb145a6514e62dcdd 100644 --- a/model_server/base/roiset.py +++ b/model_server/base/roiset.py @@ -294,7 +294,7 @@ class RoiSet(object): mask_largest_object( obmap_patches.iat(i).data ) - )[1] + )[-1] self._df.loc[roi.Index, 'classify_by_' + name] = oc om[self.acc_obj_ids.data == roi.label] = oc self.object_class_maps[name] = InMemoryDataAccessor(om) diff --git a/model_server/clients/imagej/adapter.py b/model_server/clients/imagej/adapter.py index 4f977c2c7fd48a837615b573aae847be09f9374c..dba2f21ff39d9dfd644d60ec81f85b9fdde306db 100644 --- a/model_server/clients/imagej/adapter.py +++ b/model_server/clients/imagej/adapter.py @@ -6,6 +6,7 @@ import httplib import json import urllib +from ij import IJ from ij import ImagePlus HOST = '127.0.0.1' @@ -36,6 +37,28 @@ def hit_endpoint(method, endpoint, params=None): content = {'str': str(resp_str)} return {'status': resp.status, 'content': content} + +def verify_server(popup=True): + try: + resp = hit_endpoint('GET', '/') + except Exception as e: + print(e) + msg = 'Could not find server at: ' + uri + IJ.log(msg) + if popup: + IJ.error(msg) + raise e + return False + if resp['status'] != 200: + msg = 'Unknown error verifying server at: ' + uri + if popup: + IJ.error(msg) + raise Exception(msg) + return False + else: + IJ.log('Verified server is online at: ' + uri) + return True + def run_request_sequence(imp, func, params): """ Execute a sequence of client requests in the ImageJ scripting environment diff --git a/model_server/scripts/run_server.py b/model_server/scripts/run_server.py index b40ff2b399008f26f24d1d0ab5bf205650b03c95..2ca5e559019e3444c3f135450db749736e88bf29 100644 --- a/model_server/scripts/run_server.py +++ b/model_server/scripts/run_server.py @@ -27,6 +27,11 @@ def parse_args(): action='store_true', help='display extra information that is helpful for debugging' ) + parser.add_argument( + '--reload', + action='store_true', + help='automatically restart server when changes are noticed, for development purposes' + ) return parser.parse_args() @@ -41,8 +46,9 @@ def main(args, app_name='model_server.base.api:app') -> None: 'host': args.host, 'port': int(args.port), 'log_level': 'debug', + 'reload': args.reload, }, - daemon=True, + daemon=(args.reload is False), ) url = f'http://{args.host}:{int(args.port):04d}/status' print(url)