@@ -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
4564def 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