Skip to content

Commit 48c8276

Browse files
committed
update to original repo
2 parents 40b28b8 + 9efa683 commit 48c8276

File tree

5 files changed

+37
-24
lines changed

5 files changed

+37
-24
lines changed

connectomics/config/defaults.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@
484484
# Do inference one-by-on (load a volume when needed).
485485
_C.INFERENCE.DO_SINGLY = False
486486
_C.INFERENCE.DO_SINGLY_START_INDEX = 0
487+
_C.INFERENCE.DO_SINGLY_STEP = 1
487488

488489
_C.INFERENCE.PAD_SIZE = None
489490
_C.INFERENCE.UNPAD = True

connectomics/data/dataset/build.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,12 @@ def _get_file_list(name: Union[str, List[str]],
6767
return name
6868

6969
suffix = name.split('.')[-1]
70-
if suffix == 'txt': # a text file saving the absolute path
70+
if suffix == 'txt': # a text file saving the absolute or relative path
7171
with open(name) as file:
72-
filelist = [line.rstrip('\n') for line in file]
72+
if prefix is None:
73+
filelist = [line.rstrip('\n') for line in file]
74+
else:
75+
filelist = [os.path.join(prefix, line.rstrip('\n')) for line in file]
7376
return filelist
7477

7578
suffix = name.split('/')[-1]

connectomics/data/dataset/dataset_volume.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def __init__(self,
164164
self.sample_num_a = np.sum(self.sample_num)
165165
self.sample_num_c = np.cumsum([0] + list(self.sample_num))
166166
"""
167-
167+
168168
if self.mode in ['val', 'test']: # for validation and test
169169
self.sample_size_test = [
170170
np.array([np.prod(x[1:3]), x[2]]) for x in self.sample_size]

connectomics/engine/trainer.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -274,31 +274,34 @@ def test(self):
274274

275275
def test_singly(self):
276276
dir_name = _get_file_list(self.cfg.DATASET.INPUT_PATH)
277-
img_name = _get_file_list(self.cfg.DATASET.IMAGE_NAME, prefix=dir_name[0])
278277
assert len(dir_name) == 1 # avoid ambiguity when DO_SINGLY is True
278+
img_name = _get_file_list(self.cfg.DATASET.IMAGE_NAME, prefix=dir_name[0])
279+
num_file = len(img_name)
280+
281+
if os.path.isfile(self.cfg.INFERENCE.OUTPUT_NAME):
282+
output_name = _get_file_list(self.cfg.DATASET.OUTPUT_NAME, prefix=self.output_dir)
283+
else:
284+
# same filename but different location
285+
if self.output_dir != dir_name[0]:
286+
output_name = _get_file_list(self.cfg.DATASET.IMAGE_NAME, prefix=self.output_dir)
287+
else:
288+
output_name = [x+'_result.h5' for x in img_name]
279289

280-
# save input image names for further reference
290+
# save input image names for future reference
281291
fw = open(os.path.join(self.output_dir, "images.txt"), "w")
282292
fw.write('\n'.join(img_name))
283293
fw.close()
284294

285-
num_file = len(img_name)
286-
start_idx = self.cfg.INFERENCE.DO_SINGLY_START_INDEX
287-
for i in range(start_idx, num_file):
288-
dataset = get_dataset(
289-
self.cfg, self.augmentor, self.mode, self.rank,
290-
dir_name_init=dir_name, img_name_init=[img_name[i]])
291-
self.dataloader = build_dataloader(
292-
self.cfg, self.augmentor, self.mode, dataset, self.rank)
293-
self.dataloader = iter(self.dataloader)
294-
295-
digits = int(math.log10(num_file))+1
296-
self.test_filename = self.cfg.INFERENCE.OUTPUT_NAME + \
297-
'_' + str(i).zfill(digits) + '.h5'
298-
self.test_filename = self.augmentor.update_name(
299-
self.test_filename)
300-
301-
self.test()
295+
for i in range(self.cfg.INFERENCE.DO_SINGLY_START_INDEX, num_file, self.cfg.INFERENCE.DO_SINGLY_STEP):
296+
self.test_filename = output_name[i]
297+
if not os.path.exists(self.test_filename):
298+
dataset = get_dataset(
299+
self.cfg, self.augmentor, self.mode, self.rank,
300+
dir_name_init=dir_name, img_name_init=[img_name[i]])
301+
self.dataloader = build_dataloader(
302+
self.cfg, self.augmentor, self.mode, dataset, self.rank)
303+
self.dataloader = iter(self.dataloader)
304+
self.test()
302305

303306
# -----------------------------------------------------------------------------
304307
# Misc functions

connectomics/utils/process.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,14 @@ def polarity2instance(
269269
thres = int(255.0 * thres)
270270
temp = (volume > thres) # boolean array
271271

272-
syn_pre = np.logical_and(temp[0], temp[2])
272+
del volume
273+
syn_pre = temp[0]
274+
syn_pre &= temp[2]
273275
syn_pre = remove_small_objects(syn_pre,
274276
min_size=thres_small, connectivity=1)
275-
syn_post = np.logical_and(temp[1], temp[2])
277+
278+
syn_post = temp[1]
279+
syn_post &= temp[2]
276280
syn_post = remove_small_objects(syn_post,
277281
min_size=thres_small, connectivity=1)
278282

@@ -291,7 +295,9 @@ def polarity2instance(
291295
# Since non-zero pixels in seg_pos and seg_neg are subsets of temp[2],
292296
# they are naturally subsets of non-zero pixels in foreground.
293297
seg_pre = (foreground*2 - 1) * syn_pre.astype(foreground.dtype)
298+
del syn_pre
294299
seg_post = (foreground*2) * syn_post.astype(foreground.dtype)
300+
del syn_post
295301
segm = np.maximum(seg_pre, seg_post)
296302

297303
# Report the number of synapses

0 commit comments

Comments
 (0)