Skip to content

Commit e9f923e

Browse files
committed
fix: add overwrite guard; avoid range read when subset is passed
1 parent 2cdf1f9 commit e9f923e

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

pychunkedgraph/meshing/meshgen.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -955,10 +955,20 @@ def chunk_initial_mesh_task(
955955
draco_encoding_settings = get_draco_encoding_settings_for_chunk(
956956
cg, chunk_id, mip, high_padding
957957
)
958+
ids_to_mesh = set()
958959
if node_id_subset is None:
959960
seg = get_remapped_segmentation(
960961
cg, chunk_id, mip, overlap_vx=high_padding, time_stamp=time_stamp
961962
)
963+
try:
964+
ts = cg.meta.custom_data["mesh"]["initial_ts"]
965+
mesh_ts = datetime.datetime.fromtimestamp(ts)
966+
except KeyError:
967+
mesh_ts = None
968+
range_read = cg.range_read_chunk(
969+
chunk_id, properties=attributes.Hierarchy.Child, time_stamp=mesh_ts
970+
)
971+
ids_to_mesh = set([int(x) for x in range_read.keys()])
962972
else:
963973
seg = get_remapped_seg_for_lvl2_nodes(
964974
cg,
@@ -979,16 +989,6 @@ def chunk_initial_mesh_task(
979989
print("cv path", mesh_dst)
980990
print("num ids", len(mesher.ids()))
981991

982-
try:
983-
ts = cg.meta.custom_data["mesh"]["initial_ts"]
984-
mesh_ts = datetime.datetime.fromtimestamp(ts)
985-
except KeyError:
986-
mesh_ts = None
987-
range_read = cg.range_read_chunk(
988-
chunk_id, properties=attributes.Hierarchy.Child, time_stamp=mesh_ts
989-
)
990-
ids_to_mesh = set([int(x) for x in range_read.keys()])
991-
992992
result.append(len(mesher.ids()))
993993
for obj_id in mesher.ids():
994994
mesh = mesher.get(obj_id, reduction_factor=100, max_error=max_err)
@@ -1009,8 +1009,8 @@ def chunk_initial_mesh_task(
10091009
compress = False
10101010
else:
10111011
file_contents = mesh.to_precomputed()
1012-
ids_to_mesh.remove(int(obj_id))
10131012
compress = True
1013+
ids_to_mesh.discard(int(obj_id))
10141014
if WRITING_TO_CLOUD:
10151015
if sharded:
10161016
merged_meshes[int(obj_id)] = file_contents

pychunkedgraph/meshing/meshing_batch.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
import argparse, os
2+
import numpy as np
3+
from cloudvolume import CloudVolume
4+
from cloudfiles import CloudFiles
15
from taskqueue import TaskQueue, LocalTaskQueue
2-
import argparse
6+
37
from pychunkedgraph.graph.chunkedgraph import ChunkedGraph # noqa
4-
import numpy as np
58
from pychunkedgraph.meshing.meshing_sqs import MeshTask
9+
from pychunkedgraph.meshing import meshgen_utils # noqa
610

711
if __name__ == "__main__":
812
parser = argparse.ArgumentParser()
@@ -13,11 +17,22 @@
1317
parser.add_argument('--layer', type=int)
1418
parser.add_argument('--mip', type=int)
1519
parser.add_argument('--skip_cache', action='store_true')
20+
parser.add_argument('--overwrite', type=bool)
1621

1722
args = parser.parse_args()
1823
cache = not args.skip_cache
1924

2025
cg = ChunkedGraph(graph_id=args.cg_name)
26+
cv = CloudVolume(
27+
f"graphene://https://localhost/segmentation/table/dummy",
28+
info=meshgen_utils.get_json_info(cg),
29+
)
30+
mesh_dst = os.path.join(
31+
cv.cloudpath, cv.mesh.meta.mesh_path, "initial", str(args.layer)
32+
)
33+
cf = CloudFiles(mesh_dst)
34+
if len(list(cf.list())) > 0 and not args.overwrite:
35+
raise ValueError("Mesh destination is not empty. Use `overwrite` to proceed anyway.")
2136

2237
chunks_arr = []
2338
for x in range(args.chunk_start[0],args.chunk_end[0]):

0 commit comments

Comments
 (0)