Skip to content

Commit 857b171

Browse files
Enable exporting different masks from S3 crop
1 parent 86f60c2 commit 857b171

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

scripts/extract_block_from_s3.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,30 @@ def extract_block_from_s3(args):
3535
data[~mask] = 0
3636

3737
coord_string = "-".join([str(c).zfill(4) for c in center])
38-
out_path = os.path.join(args.output_folder, f"{args.cochlea}_{source}_scale{args.scale}_{coord_string}.tif")
3938

40-
if args.as_float:
41-
data = data.astype("float32")
42-
tifffile.imwrite(out_path, data, compression="zlib")
39+
if args.mask_column:
40+
sub_ids = np.unique(data)
41+
table = table[table.label_id.isin(sub_ids)]
42+
mask_column = table[args.mask_column]
43+
mask_values = np.unique(mask_column.values)
44+
for mask_value in mask_values:
45+
out_path = os.path.join(
46+
args.output_folder, f"{args.cochlea}_{source}_scale{args.scale}_{coord_string}_mask{mask_value}.tif"
47+
)
48+
49+
ids_in_mask = table[mask_column == mask_value].label_id
50+
masked_data = np.isin(data, ids_in_mask)
51+
52+
if args.as_float:
53+
masked_data = masked_data.astype("float32")
54+
tifffile.imwrite(out_path, masked_data, compression="zlib")
55+
56+
else:
57+
out_path = os.path.join(args.output_folder, f"{args.cochlea}_{source}_scale{args.scale}_{coord_string}.tif")
58+
59+
if args.as_float:
60+
data = data.astype("float32")
61+
tifffile.imwrite(out_path, data, compression="zlib")
4362

4463

4564
def main():
@@ -54,6 +73,7 @@ def main():
5473
parser.add_argument("--scale", type=int, default=0)
5574
parser.add_argument("--as_float", action="store_true")
5675
parser.add_argument("--component_ids", type=int, nargs="+")
76+
parser.add_argument("--mask_column")
5777
args = parser.parse_args()
5878

5979
extract_block_from_s3(args)

0 commit comments

Comments
 (0)